<?php

include_once 'Conexion.php';

class Gestor_Reservaciones extends Conector
{
	private $listado;
	
	public function __construct()
	{
		parent::__construct();
		$this->listado = array();
		date_default_timezone_set('America/Costa_Rica');
	}
	
	public function guardar_reservacion($array)
	{
		if(!$this->conectar())
		{
			echo 'Ocurrio un error al conectarse con la Base de Datos...<br />';
			return -1;
		}
		mysql_select_db('restaurante');
		$query = "INSERT INTO `reservacion`(`a_nombre`, `email`, `campos`, `tarjeta`, `telefono`, `fecha`, `fecha_reservacion`) VALUES ('".$array['datos'][0]."','".$array['datos'][1]."','".$array['datos'][2]."', '".$array['datos'][4]."', '".$array['datos'][3]."', '".date('Y-m-d H:i:s')."', '".$array['datos'][5]."');";
		//echo $query;die;
		mysql_query($query) or die('Error a la horade guardar: '.mysql_error());
		$id = mysql_insert_id();
		$query = "INSERT INTO reservacion_eleccion(id_reservacion, tipo, eleccion, precio, cantidad) VALUES ";
		$iteracion = 0;
		foreach($array['seleccion'] as $row)
		{
			if($iteracion == 0){
				$query .= "( $id, ".$row.")";
			}
			else
			{
				$query .= ", ( $id, ".$row.")";
			}
			$iteracion++;
		}
		$query .= ";";
		//echo $query; die;
		mysql_query($query) or die('Error a la horade guardar: '.mysql_error());
		$this->desconectar();
		return $id;
	}
	
	public function modificar_reservacion($id, $array)
	{
		if(!$this->conectar())
		{
			echo 'Ocurrio un error al conectarse con la Base de Datos...<br />';
			return -1;
		}
		mysql_select_db('restaurante');
		$query = "UPDATE `reservacion` SET `a_nombre`='".$array['datos'][0]."',`email`='".$array['datos'][1]."',`campos`='".$array['datos'][2]."',`tarjeta`='".$array['datos'][4]."',`telefono`='".$array['datos'][3]."',`fecha_reservacion`='".$array['datos'][5]."' WHERE `id`= $id";
		mysql_query($query) or die('Error a la hora de actualizar: '.mysql_error());
		
		$query = "DELETE FROM `reservacion_eleccion` WHERE `id_reservacion` = $id";
		mysql_query($query) or die('Error a la hora de actualizar: '.mysql_error());
		
		$query = "INSERT INTO reservacion_eleccion(id_reservacion, tipo, eleccion, precio, cantidad) VALUES ";
		$iteracion = 0;
		foreach($array['seleccion'] as $row)
		{
			if($iteracion == 0){
				$query .= "( $id, ".$row.")";
			}
			else
			{
				$query .= ", ( $id, ".$row.")";
			}
			$iteracion++;
		}
		$query .= ";";
		//echo $query; die;
		mysql_query($query) or die('Error a la hora de actualizar: '.mysql_error());
		$this->desconectar();
		return $id;
	}
	
	public function eliminar_reservacion($id)
	{
		
		if(!$this->conectar())
		{
			echo 'Ocurrio un error al conectarse con la Base de Datos...<br />';
			return false;
		}
		mysql_select_db('restaurante');
		$query = "DELETE FROM `reservacion` WHERE `id` = $id";
		mysql_query($query) or die('Error a la hora de borrar: '.mysql_error());
		return true;
	}
	
	public function buscar_reservacion($id=0, $nombre='', $email='', $numTar='')
	{
		unset($this->listado);
		if($id != 0){
			$this->listado = $this->getById($id);
		}
		elseif($nombre != ''){
			$this->listado = $this->getByNombre($nombre);
		}
		elseif($email != ''){
			$this->listado = $this->getByEmail($email);
		}
		else
		{
			$this->listado = $this->getByTarjeta($numTar);
		}
		return $this->listado;
	}
	
	public function listar_reservaciones($id)
	{
		unset($this->listado);
		if(!$this->conectar())
		{
			echo 'Ocurrio un error al conectarse con la Base de Datos...<br />';
			die;
		}
		mysql_select_db('restaurante');
		$query = "SELECT `id`, `a_nombre`, `email`, `campos`, `tarjeta`, `telefono`, `fecha_reservacion` FROM `reservacion`";
		$resultado = mysql_query($query) or die('Error a la hora de listar datos: '.mysql_error());
		while($fila = mysql_fetch_object($resultado))
		{
			$this->listado[] = $fila;
		}
		mysql_free_result($resultado);
		$this->desconectar();
		return $this->listado;
	}
	
	public function obtener_PlatosByReservacion($id)
	{
		unset($this->listado);
		if(!$this->conectar())
		{
			echo 'Ocurrio un error al conectarse con la Base de Datos...<br />';
			die;
		}
		mysql_select_db('restaurante');
		$query = "SELECT * FROM `reservacion_eleccion` WHERE `tipo` = 'comida' AND `id_reservacion` = $id";
		$resultado = mysql_query($query) or die('Error a la hora de listar platos: '.mysql_error());
		while($fila = mysql_fetch_object($resultado))
		{
			$this->listado[] = $fila;
		}
		mysql_free_result($resultado);
		$this->desconectar();
		return $this->listado;
	}
	
	public function obtener_PostresByReservacion($id)
	{
		unset($this->listado);
		if(!$this->conectar())
		{
			echo 'Ocurrio un error al conectarse con la Base de Datos...<br />';
			die;
		}
		mysql_select_db('restaurante');
		$query = "SELECT * FROM `reservacion_eleccion` WHERE `tipo` = 'postre' AND `id_reservacion` = $id";
		$resultado = mysql_query($query) or die('Error a la hora de listar platos: '.mysql_error());
		while($fila = mysql_fetch_object($resultado))
		{
			$this->listado[] = $fila;
		}
		mysql_free_result($resultado);
		$this->desconectar();
		return $this->listado;
	}
	
	public function calcularTotal($id)
	{
		unset($this->listado);
		if(!$this->conectar())
		{
			echo 'Ocurrio un error al conectarse con la Base de Datos...<br />';
			die;
		}
		mysql_select_db('restaurante');
		$query="SELECT SUM((`precio` * `cantidad`)) as Total FROM `reservacion_eleccion` WHERE `id_reservacion` = $id";
		$resultado = mysql_query($query) or die('Error a la hora de listar platos: '.mysql_error());
		while($fila = mysql_fetch_object($resultado))
		{
			$this->listado[] = $fila;
		}
		mysql_free_result($resultado);
		$this->desconectar();
		return $this->listado;
	}
	
	private function getById($id)
	{
		$array = array();
		if(!$this->conectar())
		{
			echo 'Ocurrio un error al conectarse con la Base de Datos...<br />';
			die;
		}
		mysql_select_db('restaurante');
		$query = "SELECT `id`, `a_nombre`, `email`, `campos`, `tarjeta`, `telefono`, `fecha_reservacion` FROM `reservacion` WHERE `id` = $id";
		$resultado = mysql_query($query) or die('Error a la hora de buscar datos: '.mysql_error());
		while($fila = mysql_fetch_object($resultado))
		{
			$array[] = $fila;
		}
		mysql_free_result($resultado);
		$this->desconectar();
		return $array;
	}
	
	private function getByNombre($nombre)
	{
		$array = array();
		if(!$this->conectar())
		{
			echo 'Ocurrio un error al conectarse con la Base de Datos...<br />';
			die;
		}
		mysql_select_db('restaurante');
		$query = "SELECT `id`, `a_nombre`, `email`, `campos`, `tarjeta`, `telefono`, `fecha_reservacion` FROM `reservacion` WHERE `a_nombre` = '$nombre'";
		$resultado = mysql_query($query) or die('Error a la hora de buscar datos: '.mysql_error());
		while($fila = mysql_fetch_object($resultado))
		{
			$array[] = $fila;
		}
		mysql_free_result($resultado);
		$this->desconectar();
		return $array;
	}
	
	private function getByEmail($email)
	{
		$array = array();
		if(!$this->conectar())
		{
			echo 'Ocurrio un error al conectarse con la Base de Datos...<br />';
			die;
		}
		mysql_select_db('restaurante');
		$query = "SELECT `id`, `a_nombre`, `email`, `campos`, `tarjeta`, `telefono`, `fecha_reservacion` FROM `reservacion` WHERE `email` = '$email'";
		$resultado = mysql_query($query) or die('Error a la hora de buscar datos: '.mysql_error());
		while($fila = mysql_fetch_object($resultado))
		{
			$array[] = $fila;
		}
		mysql_free_result($resultado);
		$this->desconectar();
		return $array;
	}
	
	private function getByTarjeta($tarjeta)
	{
		$array = array();
		if(!$this->conectar())
		{
			echo 'Ocurrio un error al conectarse con la Base de Datos...<br />';
			die;
		}
		mysql_select_db('restaurante');
		$query = "SELECT `id`, `a_nombre`, `email`, `campos`, `tarjeta`, `telefono`, `fecha_reservacion` FROM `reservacion` WHERE `tarjeta` = '$tarjeta'";
		$resultado = mysql_query($query) or die('Error a la hora de buscar datos: '.mysql_error());
		while($fila = mysql_fetch_object($resultado))
		{
			$array[] = $fila;
		}
		mysql_free_result($resultado);
		$this->desconectar();
		return $array;
	}
	
}